package com.liuugoqing.behavioral.temple;

/**
 * 抽象类（Abstract Class）：负责给出一个算法的轮廓和骨架。它由一个模板方法和若干个基本方法构成
 * @Author : liugq
 * @Date : 2022/7/5 22:07
 * @See : 参考类
 * @Since： JDK1.8
 * @Version : 1.0
 */
public abstract class AbstractClass {
    /**
     * 模板方法，也就是核心的算法
     */
    public final void cookProcess(){
        //第一步：倒油
        this.pourOil();
        //第二步：热油
        this.heatOil();
        //第三步：倒蔬菜  子类实现
        this.pourVegetable();
        //第四步：倒调味料  子类实现
        this.pourSauce();
        //第五步：翻炒
        this.fry();
    }

    //第一步，倒油   具体方法
    public void pourOil() {
        System.out.println("倒油");
    }

    //第二步：热油是一样的，所以直接实现    具体方法
    public void heatOil() {
        System.out.println("热油");
    }

    //第三步：倒蔬菜是不一样的（一个下包菜，一个是下菜心）   抽象方法子类实现
    public abstract void pourVegetable();

    //第四步：倒调味料是不一样  抽象方法子类实现
    public abstract void pourSauce();


    //第五步：翻炒是一样的，所以直接实现   具体方法
    public void fry(){
        System.out.println("炒啊炒啊炒到熟啊");
    }
}
